//基于ES6开始介绍类的概念


//定义一个父类：Person
class Person{

  //构造函数
  constructor(name,age){
      //this关键字则代表实例对象
      this.name = name;
      this.age = age;

      console.log('constructor()方法执行了');
  }

  //定义的函数不需要加function关键字，函数之间也需要用逗号分隔，否则都会报错
  eating(){
    console.log(`${this.name}正在吃饭`);
  }
  speaking(){
    console.log(`hello ，我是${this.name},今年${this.age}岁了！`)
  }
}

//类的数据类型是函数，类本身就是构造函数
console.log(typeof Person);//function
console.log(Person === Person.prototype.constructor);//true


const p = new Person("张三",20);
console.log(p.name);
console.log(p.speaking());



/**
 * 类：
 * constructor()的方法是类的默认方法，通过new命令生产对象实例时，自动调用该方法‘
 * 一个类必须有constructor()方法，如果没有显示定义，一个空的constructor()方法会默认添加
 * 类必须使用new调用，否则会报错。这是它跟普通构造函数的一个主要区别，后者不用new也可以执行
 * 实例：
 * 生成类的实例的写法，与 ES5 完全一样，也是使用new命令
 * 类的属性和方法，除非显式定义在其本身（即定义在this对象上），否则都是定义在原型上（即定义在class上）
 * 类的所有实例共享一个原型对象
 * 
 * 
 */
